/**
 * 高精度:比较  额外:可同进制($.radix<=62进制)
 * @param a string|number 第一个值
 * @param b string|number 第二个值
 * @param x int 返回方式 0:比较,返回0|1|-1
 * 		1:返回较大值a|b,  -1:返回较小值a|b
 * @return int|string  0:相等,1:a大,-1:b大
 * 		string: a|b, 格式化整数前小数后的0
 */
$.bcCom = function(a, b, x=0){
	const COM = function(a, b){ // 比较:0|1|-1
		if(a[0]!==b[0]) return b[0] ? 1 : -1;
		const [A, B] = a[0] ? [-1,1] : [1,-1];
		if(a[1]!==b[1]){
			const m=a[1].length, n=b[1].length;
			return (m===n?a[1]>b[1]:(m>n))?A:B;
		}
		a=a[2];  b=b[2];  if(a===b) return 0;
		const al=a.length, bl=b.length;
		for(let i=0, m=Math.min(al,bl); i<m; i++)
			if(a[i]!==b[i]) return a[i]>b[i]?A:B;
		return al>bl ? A : B;
	}
	$.bcCom = function(a, b, x=0){
		const A=$.bcArr(a), B=$.bcArr(b), n=COM(A,B);
		if(!x) return n;  const v=x===n?A:B, d=v[2];
		return v[0]+(v[1]||'0')+(d?'.'+d:'');
	};
	return $.bcCom(a, b, x);
};
